package cn.huapu.power.energy.util;

import java.util.Arrays;

/**
* @Author jzx
* @Description //TODO 字符串工具类
* @Date 8:21 2019-5-14
* @Param
* @return
**/
public class StringUtil {
	/**
	 * 判断一个obj是否为空，空则返回true,反之返回false
	 * @param obj Java顶级父类
	 * @return boolean 判断结果
	 */
	 public static boolean isEmpty(Object obj){
		   if(null!=obj&&obj.toString().length()>0){
			   return false;
		   }
		   return true;
	  }
	
	/**
	 * 是否为空或者null，null字符串判为true
	 * 
	 * @param value
	 * @return
	 */
	public static boolean isEmpty(String value) {
		if (value == null || value.length() == 0 || value.trim().equals("null")) {
			return true;
		}
		return false;
	}
	  
	 /**
	   * 判断一个obj是否部位空，如果不为空则返回true,反之则返回false
	   * @param obj Java顶级父类
	   * @return boolean 判断结果
	   */
	  public static boolean isNotEmpty(Object obj){
		  return !isEmpty(obj);
	  }	
	  
	  /**
	   * 判断一个字符串是否满足正则表达式,满足则返回true,不满足则返回false.
	   * @param str 目标字符串
	   * @param regex 正则表达式
	   * @return boolean 判断结果
	   */
	  public static boolean isMatch(String str,String regex) {
	    		if(str.matches(regex)){
	    			return true;
	    		}else{
	    			return false;
	    		}		
	    }
	  
	/**
	 * URL中不改转的字符改回
	 * @param input 目标字符串
	 * @return String 字符串
	 */
	public static String backCode(String input) {
		input = input.replaceAll("\\%2E", ".");
		input = input.replaceAll("\\%28", "(");
		input = input.replaceAll("\\%29", ")");
		input = input.replaceAll("\\%24", "$");
		input = input.replaceAll("\\%5E", "^");
		input = input.replaceAll("\\%7B", "{");
		input = input.replaceAll("\\%5B", "[");
		input = input.replaceAll("\\%7C", "|");
		input = input.replaceAll("\\%2A", "*");
		input = input.replaceAll("\\%2B", "+");
		input = input.replaceAll("\\%3F", "?");
		return input;
	}
	
	/**
	 * 合并两个数组
	 * @param first 数组
	 * @param second 数组
	 * @return T[] 泛型数组
	 */
	public static <T> T[] concat(T[] first, T[] second) {  
		  T[] result = Arrays.copyOf(first, first.length + second.length);  
		  System.arraycopy(second, 0, result, first.length, second.length);  
		  return result;  
		}  
	
	/**
	 * 合并为一个新的字符串
	 * @param a 目标字符串
	 * @param b 目标字符串
	 * @param t 目标字符串
	 * @return String 字符串
	 */
	public static String Stringinsert(String a, String b, int t) {
		return a.substring(0, t) + b + a.substring(t + 1, a.length());
	}  
	
	/**
	 * 根据文件全限定名获取目录
	 * 
	 * @param fullFilePath 文件全限定名
	 * @return
	 * @throws Exception
	 */
	public static String getDir(String fullFilePath) throws Exception{
		if(ObjectHelper.isEmpty(fullFilePath)) {
			throw new Exception("文件路径为空");
		}
		if(fullFilePath.indexOf("/") != -1) {
			return fullFilePath.substring(0, fullFilePath.lastIndexOf("/"));
		}else {
			throw new Exception("文件路径有误");
		}
	}
	
	/**
	 * 生成随机字符
	 * 
	 * @return
	 */
	public static String genChar() {
		String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		return String.valueOf(chars.charAt((int)(Math.random() * 26)));
	}

	/**
	* @Author jzx
	* @Description //将时间类型单个提取
	* @Date 19:45 2019-5-30
	* @Param
	* @return
	**/

	
}
